package org.fanximall.erp.product.application.req;

import lombok.Data;
import org.fanximall.erp.common.cqrs.RequestCommand;
import org.fanximall.erp.common.utils.ExceptionUtils;
import org.fanximall.erp.common.utils.MessageUtils;
import org.fanximall.erp.common.valid.ValidGroup;
import org.fanximall.erp.product.application.enums.DictCodeEnum;
import org.fanximall.erp.product.application.valid.ValidationDictValue;


import javax.validation.constraints.*;
import java.util.List;


/**
 * @author :  william
 * @version :  V1.0  created in 2024/4/23
 */
@Data
public class ConfAttributeSaveCommand implements RequestCommand {

    @NotNull(message = "更新属性ID不能为空",groups = ValidGroup.CrudGroup.Update.class)
    @Null(message = "添加属性ID不能存在",groups = ValidGroup.CrudGroup.Create.class)
    private Long id;

    /**
     * 属性项名称
     */
    @NotBlank(message = "属性项名称不能为空")
    private String attrItemName;

    /**
     * 属性类型
     */
    @NotBlank
    @ValidationDictValue
    private String attrType;

    /**
     * 属性输入方式
     */
    @NotBlank
    @ValidationDictValue
    private String inputMode;

    /**
     * 备注
     */
    private String remark;

    /**
     * 是否必填 1 必填 0 非必填
     */
    @NotNull
    @Min(value = 0, message = "请输入0或1")
    @Max(value = 1, message = "请输入0或1")
    private Integer required;

    /**
     * 属性描述
     */
    private String attrDescription;

    /**
     * 输入的格式
     */
    @ValidationDictValue
    private String dataFormat;

    @ValidationDictValue
    private String unit;
    /**
     * 最大长度
     */
    private Integer maxLength;
    /**
     * 最小长度
     */
    private Integer minLength;

    /**
     * 属性值列表
     */
    private List<AttributeValueSaveCommand> attributeValueSaveCommands;




    /**
     * 校验录入方式为输入时的必填项
     */
    public void validateInputMode() {
        if (DictCodeEnum.INPUT_MODE_INPUT.getDictCode().equals(this.inputMode)){
            ExceptionUtils.ifEmptyThrowVerifyException(this.dataFormat,"数据格式不能为空");
            ExceptionUtils.ifEmptyThrowVerifyException(this.minLength,"最少长度不能为空");
            ExceptionUtils.ifEmptyThrowVerifyException(this.maxLength,"最大长度不能为空");
        }


    }

}
